home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / PowerPC / Dev / PPCRelease / Examples / Bustest / BusTestPPC.s < prev    next >
Encoding:
Text File  |  1998-07-06  |  25.6 KB  |  1,729 lines

  1.  # GNU C 2.7.2.1
  2.  # -O2 -fdefer-pop -fomit-frame-pointer -fcse-follow-jumps -fcse-skip-blocks
  3.  # -fexpensive-optimizations -fthread-jumps -fstrength-reduce -fpeephole
  4.  # -fforce-mem -ffunction-cse -finline -fcaller-saves -fpcc-struct-return
  5.  # -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fcommon
  6.  # -fgnu-linker -mpowerpc -mnew-mnemonics
  7.  
  8.     .file    "BusTestPPC.c"
  9. gcc2_compiled.:
  10.     .globl loopticks
  11.     .section    ".data"
  12.     .align 3
  13.     .type     loopticks,@object
  14.     .size     loopticks,8
  15. loopticks:
  16.     .long 0
  17.     .long 0
  18.     .globl LoopCount
  19.     .align 2
  20.     .type     LoopCount,@object
  21.     .size     LoopCount,4
  22. LoopCount:
  23.     .long 100
  24.     .globl ArgumentString
  25. .section    .rodata
  26.     .align 2
  27. .LC0:
  28.     .string    "Size/N,Loop/N,Address/N,ASize/N,Full/S,Chip/S,Rom/S,MMU/S,CACHE/S"
  29.     .section    ".data"
  30.     .align 2
  31.     .type     ArgumentString,@object
  32.     .size     ArgumentString,4
  33. ArgumentString:
  34.     .long .LC0
  35. .section    .rodata
  36.     .align 2
  37. .LC1:
  38.     .string    "dos.library"
  39.     .align 2
  40. .LC2:
  41.     .string    "Commandline Error\n"
  42.     .align 2
  43. .LC3:
  44.     .string    "Error: Can`t alloc Dest Fastram:\n"
  45.     .align 2
  46. .LC4:
  47.     .string    "Error: Can`t alloc Source Fastram:\n"
  48.     .align 2
  49. .LC5:
  50.     .string    "CopyBack "
  51.     .align 2
  52. .LC6:
  53.     .string    "WriteThrough "
  54.     .align 2
  55. .LC7:
  56.     .string    "NoCache "
  57.     .align 2
  58. .LC8:
  59.     .string    "NoCacheSync "
  60.     .align 2
  61. .LC9:
  62.     .string    "Chipram:\n"
  63.     .align 2
  64. .LC10:
  65.     .string    "Rom:\n"
  66.     .align 2
  67. .LC11:
  68.     .string    "Ram Size 0x%lx Loop Count %ld\n"
  69.     .align 2
  70. .LC12:
  71.     .string    "0x%08lx - 0x%08lx: assumes cacheoff at the address\n"
  72.     .align 2
  73. .LC13:
  74.     .string    "Can`t open dos.library\n"
  75.     .section    ".text"
  76.     .align 2
  77.     .globl main
  78.     .type     main,@function
  79.     .long 0x7c04c
  80. main:
  81.     stwu 1,-48(1)
  82.     mflr 0
  83.     stw 28,32(1)
  84.     stw 29,36(1)
  85.     stw 30,40(1)
  86.     stw 31,44(1)
  87.     stw 0,52(1)
  88.     mr 31,1
  89.     addis 11,0,SysBase@ha
  90.     li 9,4
  91.     lwz 10,0(9)
  92.     addis 9,0,.LC1@ha
  93.     addi 9,9,.LC1@l
  94.     li 29,0
  95.     li 30,1
  96.     lwz 0,0(1)
  97.     stw 10,SysBase@l(11)
  98.     stwu 0,-144(1)
  99.     addi 3,1,47
  100.     rlwinm 3,3,0,0,26
  101.     stw 9,64(3)
  102.     stw 29,28(3)
  103.     stw 10,84(3)
  104.     stw 30,4(3)
  105.     stw 30,16(3)
  106.     li 0,-552
  107.     stw 0,0(3)
  108.     bl PPCCallOS
  109.     mr 11,3
  110.     cmpwi 1,11,0
  111.     addis 9,0,DOSBase@ha
  112.     stw 11,DOSBase@l(9)
  113.     bc 12,6,.L4
  114.     addis 9,0,ArgumentString@ha
  115.     lwz 0,0(1)
  116.     addis 28,0,MyArgs@ha
  117.     stwu 0,-144(1)
  118.     addi 3,1,47
  119.     rlwinm 3,3,0,0,26
  120.     stw 29,40(3)
  121.     stw 11,84(3)
  122.     stw 30,4(3)
  123.     lwz 0,ArgumentString@l(9)
  124.     stw 30,16(3)
  125.     stw 0,32(3)
  126.     addi 0,28,MyArgs@l
  127.     stw 0,36(3)
  128.     li 0,-798
  129.     stw 0,0(3)
  130.     bl PPCCallOS
  131.     cmpwi 1,3,0
  132.     bc 4,6,.L7
  133.     addis 3,0,.LC2@ha
  134.     addi 3,3,.LC2@l
  135.     b .L64
  136. .L7:
  137.     addis 9,0,MyArgs+4@ha
  138.     lwz 9,MyArgs+4@l(9)
  139.     cmpwi 1,9,0
  140.     bc 12,6,.L9
  141.     lwz 0,0(9)
  142.     addis 9,0,LoopCount@ha
  143.     stw 0,LoopCount@l(9)
  144. .L9:
  145.     lis 0,0x8002
  146.     ori 0,0,16385
  147.     stw 0,8(31)
  148.     stw 30,12(31)
  149.     stw 29,16(31)
  150.     addi 3,31,8
  151.     bl PPCCreateTimerObject
  152.     cmpwi 1,3,0
  153.     addis 9,0,MyTimerObject@ha
  154.     stw 3,MyTimerObject@l(9)
  155.     bc 12,6,.L8
  156.     addis 9,0,CacheBorder@ha
  157.     lis 11,0x1
  158.     stw 11,CacheBorder@l(9)
  159.     lwz 9,MyArgs@l(28)
  160.     li 3,0
  161.     cmpwi 1,9,0
  162.     ori 3,3,32768
  163.     addis 29,0,CacheSize@ha
  164.     stw 3,CacheSize@l(29)
  165.     bc 12,6,.L11
  166.     lwz 0,0(9)
  167.     addis 9,0,MemSize@ha
  168.     addic 0,0,4095
  169.     rlwinm 0,0,0,0,19
  170.     stw 0,MemSize@l(9)
  171. .L11:
  172.     addis 8,0,MemSize@ha
  173.     addis 9,0,MyArgs+32@ha
  174.     lwz 10,MemSize@l(8)
  175.     lwz 9,MyArgs+32@l(9)
  176.     subfc 11,10,11
  177.     subfe 11,11,11
  178.     nand 11,11,11
  179.     rlwinm 0,11,0,15,15
  180.     cmpwi 1,9,0
  181.     andc 9,10,11
  182.     or 0,0,9
  183.     stw 0,MemSize@l(8)
  184.     bc 4,6,.L14
  185.     addis 9,0,MyArgs+16@ha
  186.     lwz 0,MyArgs+16@l(9)
  187.     cmpwi 1,0,0
  188.     bc 12,6,.L13
  189. .L14:
  190.     li 4,4
  191.     bl PPCAllocVec
  192.     mr. 30,3
  193.     bc 12,2,.L16
  194.     lwz 3,CacheSize@l(29)
  195.     li 4,4
  196.     bl PPCAllocVec
  197.     mr. 29,3
  198.     bc 12,2,.L17
  199.     mr 3,30
  200.     mr 4,29
  201.     bl CacheTest
  202.     mr 3,29
  203.     bl PPCFreeVec
  204.     b .L18
  205. .L17:
  206.     addis 3,0,.LC3@ha
  207.     addi 3,3,.LC3@l
  208.     crxor 6,6,6
  209.     bl PPCprintf
  210. .L18:
  211.     mr 3,30
  212.     bl PPCFreeVec
  213.     b .L13
  214. .L16:
  215.     addis 3,0,.LC4@ha
  216.     addi 3,3,.LC4@l
  217.     crxor 6,6,6
  218.     bl PPCprintf
  219. .L13:
  220.     addis 9,0,MyArgs+8@ha
  221.     lwz 0,MyArgs+8@l(9)
  222.     cmpwi 1,0,0
  223.     bc 12,6,.L21
  224.     addis 9,0,MyArgs+16@ha
  225.     lwz 0,MyArgs+16@l(9)
  226.     cmpwi 1,0,0
  227.     bc 12,6,.L20
  228. .L21:
  229.     addis 28,0,CacheBorder@ha
  230.     addis 29,0,MemSize@ha
  231.     lwz 3,MemSize@l(29)
  232.     lwz 9,CacheBorder@l(28)
  233.     li 4,4
  234.     subfc 0,9,3
  235.     subfe 0,0,0
  236.     nand 0,0,0
  237.     and 3,3,0
  238.     andc 0,9,0
  239.     or 3,3,0
  240.     addi 3,3,4096
  241.     bl PPCAllocVec
  242.     mr. 30,3
  243.     bc 12,2,.L22
  244.     lwz 3,MemSize@l(29)
  245.     lwz 9,CacheBorder@l(28)
  246.     li 4,4
  247.     subfc 0,9,3
  248.     subfe 0,0,0
  249.     nand 0,0,0
  250.     and 3,3,0
  251.     andc 0,9,0
  252.     or 3,3,0
  253.     addi 3,3,4096
  254.     bl PPCAllocVec
  255.     mr. 29,3
  256.     bc 12,2,.L24
  257.     addis 3,0,.LC5@ha
  258.     addi 3,3,.LC5@l
  259.     crxor 6,6,6
  260.     bl PPCprintf
  261.     mr 3,30
  262.     mr 4,29
  263.     li 5,32
  264.     bl MemoryBurstTest
  265.     mr 3,29
  266.     bl PPCFreeVec
  267.     b .L26
  268. .L24:
  269.     addis 3,0,.LC3@ha
  270.     addi 3,3,.LC3@l
  271.     crxor 6,6,6
  272.     bl PPCprintf
  273. .L26:
  274.     mr 3,30
  275.     bl PPCFreeVec
  276.     b .L27
  277. .L22:
  278.     addis 3,0,.LC4@ha
  279.     addi 3,3,.LC4@l
  280.     crxor 6,6,6
  281.     bl PPCprintf
  282. .L27:
  283.     addis 9,0,MyArgs+28@ha
  284.     lwz 0,MyArgs+28@l(9)
  285.     cmpwi 1,0,0
  286.     bc 4,6,.L29
  287.     addis 9,0,MyArgs+16@ha
  288.     lwz 0,MyArgs+16@l(9)
  289.     cmpwi 1,0,0
  290.     bc 12,6,.L20
  291. .L29:
  292.     lis 4,0x40
  293.     addis 28,0,CacheBorder@ha
  294.     addis 29,0,MemSize@ha
  295.     lwz 3,MemSize@l(29)
  296.     lwz 9,CacheBorder@l(28)
  297.     ori 4,4,4
  298.     subfc 0,9,3
  299.     subfe 0,0,0
  300.     nand 0,0,0
  301.     and 3,3,0
  302.     andc 0,9,0
  303.     or 3,3,0
  304.     addi 3,3,4096
  305.     bl PPCAllocVec
  306.     mr. 30,3
  307.     bc 12,2,.L30
  308.     lis 4,0x40
  309.     lwz 3,MemSize@l(29)
  310.     lwz 9,CacheBorder@l(28)
  311.     ori 4,4,4
  312.     subfc 0,9,3
  313.     subfe 0,0,0
  314.     nand 0,0,0
  315.     and 3,3,0
  316.     andc 0,9,0
  317.     or 3,3,0
  318.     addi 3,3,4096
  319.     bl PPCAllocVec
  320.     mr. 29,3
  321.     bc 12,2,.L32
  322.     addis 3,0,.LC6@ha
  323.     addi 3,3,.LC6@l
  324.     crxor 6,6,6
  325.     bl PPCprintf
  326.     mr 3,30
  327.     mr 4,29
  328.     li 5,0
  329.     bl MemoryBurstTest
  330.     mr 3,29
  331.     bl PPCFreeVec
  332.     b .L34
  333. .L32:
  334.     addis 3,0,.LC3@ha
  335.     addi 3,3,.LC3@l
  336.     crxor 6,6,6
  337.     bl PPCprintf
  338. .L34:
  339.     mr 3,30
  340.     bl PPCFreeVec
  341.     b .L35
  342. .L30:
  343.     addis 3,0,.LC4@ha
  344.     addi 3,3,.LC4@l
  345.     crxor 6,6,6
  346.     bl PPCprintf
  347. .L35:
  348.     lis 4,0x100
  349.     addis 28,0,CacheBorder@ha
  350.     addis 29,0,MemSize@ha
  351.     lwz 3,MemSize@l(29)
  352.     lwz 9,CacheBorder@l(28)
  353.     ori 4,4,4
  354.     subfc 0,9,3
  355.     subfe 0,0,0
  356.     nand 0,0,0
  357.     and 3,3,0
  358.     andc 0,9,0
  359.     or 3,3,0
  360.     addi 3,3,4096
  361.     bl PPCAllocVec
  362.     mr. 30,3
  363.     bc 12,2,.L36
  364.     lis 4,0x100
  365.     lwz 3,MemSize@l(29)
  366.     lwz 9,CacheBorder@l(28)
  367.     ori 4,4,4
  368.     subfc 0,9,3
  369.     subfe 0,0,0
  370.     nand 0,0,0
  371.     and 3,3,0
  372.     andc 0,9,0
  373.     or 3,3,0
  374.     addi 3,3,4096
  375.     bl PPCAllocVec
  376.     mr. 29,3
  377.     bc 12,2,.L38
  378.     addis 3,0,.LC7@ha
  379.     addi 3,3,.LC7@l
  380.     crxor 6,6,6
  381.     bl PPCprintf
  382.     mr 3,30
  383.     mr 4,29
  384.     bl MemorySingleTest
  385.     mr 3,29
  386.     bl PPCFreeVec
  387.     b .L40
  388. .L38:
  389.     addis 3,0,.LC3@ha
  390.     addi 3,3,.LC3@l
  391.     crxor 6,6,6
  392.     bl PPCprintf
  393. .L40:
  394.     mr 3,30
  395.     bl PPCFreeVec
  396.     b .L41
  397. .L36:
  398.     addis 3,0,.LC4@ha
  399.     addi 3,3,.LC4@l
  400.     crxor 6,6,6
  401.     bl PPCprintf
  402. .L41:
  403.     lis 4,0x2000
  404.     addis 28,0,CacheBorder@ha
  405.     addis 29,0,MemSize@ha
  406.     lwz 3,MemSize@l(29)
  407.     lwz 9,CacheBorder@l(28)
  408.     ori 4,4,4
  409.     subfc 0,9,3
  410.     subfe 0,0,0
  411.     nand 0,0,0
  412.     and 3,3,0
  413.     andc 0,9,0
  414.     or 3,3,0
  415.     addi 3,3,4096
  416.     bl PPCAllocVec
  417.     mr. 30,3
  418.     bc 12,2,.L42
  419.     lis 4,0x2000
  420.     lwz 3,MemSize@l(29)
  421.     lwz 9,CacheBorder@l(28)
  422.     ori 4,4,4
  423.     subfc 0,9,3
  424.     subfe 0,0,0
  425.     nand 0,0,0
  426.     and 3,3,0
  427.     andc 0,9,0
  428.     or 3,3,0
  429.     addi 3,3,4096
  430.     bl PPCAllocVec
  431.     mr. 29,3
  432.     bc 12,2,.L44
  433.     addis 3,0,.LC8@ha
  434.     addi 3,3,.LC8@l
  435.     crxor 6,6,6
  436.     bl PPCprintf
  437.     mr 3,30
  438.     mr 4,29
  439.     bl MemorySingleTest
  440.     mr 3,29
  441.     bl PPCFreeVec
  442.     b .L46
  443. .L44:
  444.     addis 3,0,.LC3@ha
  445.     addi 3,3,.LC3@l
  446.     crxor 6,6,6
  447.     bl PPCprintf
  448. .L46:
  449.     mr 3,30
  450.     bl PPCFreeVec
  451.     b .L20
  452. .L42:
  453.     addis 3,0,.LC4@ha
  454.     addi 3,3,.LC4@l
  455.     crxor 6,6,6
  456.     bl PPCprintf
  457. .L20:
  458.     addis 9,0,MyArgs+20@ha
  459.     lwz 0,MyArgs+20@l(9)
  460.     cmpwi 1,0,0
  461.     bc 4,6,.L49
  462.     addis 9,0,MyArgs+16@ha
  463.     lwz 0,MyArgs+16@l(9)
  464.     cmpwi 1,0,0
  465.     bc 12,6,.L48
  466. .L49:
  467.     addis 28,0,CacheBorder@ha
  468.     addis 29,0,MemSize@ha
  469.     lwz 3,MemSize@l(29)
  470.     lwz 9,CacheBorder@l(28)
  471.     li 4,2
  472.     subfc 0,9,3
  473.     subfe 0,0,0
  474.     nand 0,0,0
  475.     and 3,3,0
  476.     andc 0,9,0
  477.     or 3,3,0
  478.     addi 3,3,4096
  479.     bl PPCAllocVec
  480.     mr. 30,3
  481.     bc 12,2,.L50
  482.     lwz 3,MemSize@l(29)
  483.     lwz 9,CacheBorder@l(28)
  484.     li 4,2
  485.     subfc 0,9,3
  486.     subfe 0,0,0
  487.     nand 0,0,0
  488.     and 3,3,0
  489.     andc 0,9,0
  490.     or 3,3,0
  491.     addi 3,3,4096
  492.     bl PPCAllocVec
  493.     mr. 29,3
  494.     bc 12,2,.L52
  495.     addis 3,0,.LC9@ha
  496.     addi 3,3,.LC9@l
  497.     crxor 6,6,6
  498.     bl PPCprintf
  499.     mr 3,30
  500.     mr 4,29
  501.     bl MemorySingleTest
  502.     mr 3,29
  503.     bl PPCFreeVec
  504.     b .L54
  505. .L52:
  506.     addis 3,0,.LC4@ha
  507.     addi 3,3,.LC4@l
  508.     crxor 6,6,6
  509.     bl PPCprintf
  510. .L54:
  511.     mr 3,30
  512.     bl PPCFreeVec
  513.     b .L48
  514. .L50:
  515.     addis 3,0,.LC4@ha
  516.     addi 3,3,.LC4@l
  517.     crxor 6,6,6
  518.     bl PPCprintf
  519. .L48:
  520.     addis 9,0,MyArgs+24@ha
  521.     lwz 0,MyArgs+24@l(9)
  522.     cmpwi 1,0,0
  523.     bc 4,6,.L57
  524.     addis 9,0,MyArgs+16@ha
  525.     lwz 0,MyArgs+16@l(9)
  526.     cmpwi 1,0,0
  527.     bc 12,6,.L56
  528. .L57:
  529.     addis 3,0,.LC10@ha
  530.     addi 3,3,.LC10@l
  531.     crxor 6,6,6
  532.     bl PPCprintf
  533.     lis 3,0xf8
  534.     li 4,0
  535.     li 5,32
  536.     bl MemoryBurstTest
  537. .L56:
  538.     addis 30,0,MyArgs+8@ha
  539.     lwz 0,MyArgs+8@l(30)
  540.     cmpwi 1,0,0
  541.     bc 12,6,.L58
  542.     addis 9,0,MyArgs+12@ha
  543.     lwz 9,MyArgs+12@l(9)
  544.     cmpwi 1,9,0
  545.     bc 12,6,.L59
  546.     lwz 0,0(9)
  547.     addis 9,0,MemSize@ha
  548.     addic 0,0,4095
  549.     rlwinm 0,0,0,0,19
  550.     stw 0,MemSize@l(9)
  551. .L59:
  552.     addis 29,0,MemSize@ha
  553.     addis 9,0,LoopCount@ha
  554.     addis 3,0,.LC11@ha
  555.     lwz 4,MemSize@l(29)
  556.     lwz 5,LoopCount@l(9)
  557.     addi 3,3,.LC11@l
  558.     crxor 6,6,6
  559.     bl PPCprintf
  560.     addis 3,0,.LC12@ha
  561.     lwz 9,MyArgs+8@l(30)
  562.     lwz 5,MemSize@l(29)
  563.     lwz 4,0(9)
  564.     addi 3,3,.LC12@l
  565.     add 5,4,5
  566.     crxor 6,6,6
  567.     bl PPCprintf
  568.     lwz 9,MyArgs+8@l(30)
  569.     lwz 3,0(9)
  570.     li 4,0
  571.     bl MemorySingleTest
  572. .L58:
  573.     addis 9,0,MyTimerObject@ha
  574.     lwz 3,MyTimerObject@l(9)
  575.     bl PPCDeleteTimerObject
  576. .L8:
  577.     addis 9,0,DOSBase@ha
  578.     lwz 0,0(1)
  579.     addis 11,0,SysBase@ha
  580.     stwu 0,-144(1)
  581.     addi 3,1,47
  582.     rlwinm 3,3,0,0,26
  583.     lwz 0,DOSBase@l(9)
  584.     lwz 9,SysBase@l(11)
  585.     stw 0,64(3)
  586.     stw 9,84(3)
  587.     li 0,1
  588.     stw 0,4(3)
  589.     stw 0,16(3)
  590.     li 0,-414
  591.     stw 0,0(3)
  592.     bl PPCCallOS
  593.     li 3,0
  594.     b .L63
  595. .L4:
  596.     addis 3,0,.LC13@ha
  597.     addi 3,3,.LC13@l
  598. .L64:
  599.     crxor 6,6,6
  600.     bl PPCprintf
  601.     li 3,20
  602. .L63:
  603.     lwz 11,0(1)
  604.     lwz 0,4(11)
  605.     mtlr 0
  606.     lwz 28,-16(11)
  607.     lwz 29,-12(11)
  608.     lwz 30,-8(11)
  609.     lwz 31,-4(11)
  610.     mr 1,11
  611.     blr
  612. .Lfe1:
  613.     .size     main,.Lfe1-main
  614.     .align 2
  615.     .globl CalcTimer
  616.     .type     CalcTimer,@function
  617.     .long 0x404c
  618. CalcTimer:
  619.     stwu 1,-32(1)
  620.     mflr 0
  621.     stw 28,16(1)
  622.     stw 29,20(1)
  623.     stw 30,24(1)
  624.     stw 31,28(1)
  625.     stw 0,36(1)
  626.     lis 4,0x8002
  627.     ori 4,4,16403
  628.     addis 28,0,MyTimerObject@ha
  629.     addis 29,0,Result@ha
  630.     lwz 3,MyTimerObject@l(28)
  631.     addi 5,29,Result@l
  632.     bl PPCGetTimerObject
  633.     lis 4,0x8002
  634.     ori 4,4,16405
  635.     addi 29,29,Result@l
  636.     mr 5,29
  637.     addis 9,0,ticks@ha
  638.     lwz 0,4(29)
  639.     lwz 3,MyTimerObject@l(28)
  640.     stw 0,ticks@l(9)
  641.     bl PPCGetTimerObject
  642.     lfd 0,0(29)
  643.     addis 9,0,allticks@ha
  644.     addi 9,9,allticks@l
  645.     stfd 0,0(9)
  646.     lwz 0,36(1)
  647.     mtlr 0
  648.     lwz 28,16(1)
  649.     lwz 29,20(1)
  650.     lwz 30,24(1)
  651.     lwz 31,28(1)
  652.     addi 1,1,32
  653.     blr
  654. .Lfe2:
  655.     .size     CalcTimer,.Lfe2-CalcTimer
  656. .section    .rodata
  657.     .align 2
  658. .LC14:
  659.     .string    "CPU Cache isn`t working yet..measurements are wrong\n"
  660.     .section    ".text"
  661.     .align 2
  662.     .globl CacheTest
  663.     .type     CacheTest,@function
  664.     .long 0x400c
  665. CacheTest:
  666.     stwu 1,-16(1)
  667.     mflr 0
  668.     stw 0,20(1)
  669.     addis 3,0,.LC14@ha
  670.     addi 3,3,.LC14@l
  671.     crxor 6,6,6
  672.     bl PPCprintf
  673.     lwz 0,20(1)
  674.     mtlr 0
  675.     addi 1,1,16
  676.     blr
  677. .Lfe3:
  678.     .size     CacheTest,.Lfe3-CacheTest
  679. .section    .rodata
  680.     .align 2
  681. .LC15:
  682.     .string    "Bus Burst Performance Statistics\n"
  683.     .align 2
  684. .LC16:
  685.     .string    "%16Ld Line   Read\t%4g MB/s Mem Bandwidth\n"
  686.     .globl __divdi3
  687.     .globl __floatdidf
  688.     .align 2
  689. .LC17:
  690.     .string    "%16Ld Line   Write\t%4g MB/s Mem Bandwidth\n"
  691.     .align 3
  692. .LC18:
  693.     .double 0d1.04857600000000000000e6
  694.     .section    ".text"
  695.     .align 2
  696.     .globl MemoryBurstTest
  697.     .type     MemoryBurstTest,@function
  698.     .long 0x40bc
  699. MemoryBurstTest:
  700.     stwu 1,-80(1)
  701.     mflr 0
  702.     stw 21,36(1)
  703.     stw 22,40(1)
  704.     stw 23,44(1)
  705.     stw 24,48(1)
  706.     stw 25,52(1)
  707.     stw 26,56(1)
  708.     stw 27,60(1)
  709.     stw 28,64(1)
  710.     stw 29,68(1)
  711.     stw 30,72(1)
  712.     stw 31,76(1)
  713.     stw 0,84(1)
  714.     mr 26,3
  715.     mr 22,5
  716.     addis 3,0,.LC15@ha
  717.     addi 3,3,.LC15@l
  718.     crxor 6,6,6
  719.     bl PPCprintf
  720.     addis 9,0,CacheBorder@ha
  721.     addis 27,0,MyTimerObject@ha
  722.     addis 25,0,LoopCount@ha
  723.     lwz 0,CacheBorder@l(9)
  724.     addis 9,0,loopticks@ha
  725.     addi 23,9,loopticks@l
  726.     addis 9,0,allticks@ha
  727.     addi 24,9,allticks@l
  728.     mr 31,0
  729.     li 30,0
  730.     b .L68
  731. .L71:
  732.     bl PPCCacheFlushAll
  733.     lis 4,0x8002
  734.     ori 4,4,16401
  735.     li 5,0
  736.     lwz 3,MyTimerObject@l(27)
  737.     bl PPCSetTimerObject
  738.     slwi 9,30,27
  739.     srwi 0,31,5
  740.     or 29,9,0
  741.     srawi 28,30,5
  742.     mr 3,26
  743.     lwz 5,LoopCount@l(25)
  744.     mr 4,29
  745.     bl memreadlinetime
  746.     lis 4,0x8002
  747.     ori 4,4,16402
  748.     lwz 3,MyTimerObject@l(27)
  749.     li 5,0
  750.     bl PPCSetTimerObject
  751.     bl CalcTimer
  752.     lfd 0,0(24)
  753.     stfd 0,0(23)
  754.     bl PPCCacheFlushAll
  755.     lis 4,0x8002
  756.     ori 4,4,16401
  757.     lwz 3,MyTimerObject@l(27)
  758.     li 5,0
  759.     bl PPCSetTimerObject
  760.     mr 3,26
  761.     lwz 5,LoopCount@l(25)
  762.     mr 4,29
  763.     bl memreadline
  764.     lis 4,0x8002
  765.     ori 4,4,16402
  766.     lwz 3,MyTimerObject@l(27)
  767.     li 5,0
  768.     bl PPCSetTimerObject
  769.     bl CalcTimer
  770.     lwz 9,LoopCount@l(25)
  771.     mr 10,9
  772.     li 9,0
  773.     mulhw 7,31,10
  774.     mullw 8,31,10
  775.     srwi 4,10,31
  776.     add 4,4,9
  777.     mullw 4,4,31
  778.     srwi 5,31,31
  779.     add 5,5,30
  780.     addis 6,0,ticks@ha
  781.     lwz 0,ticks@l(6)
  782.     mullw 5,5,10
  783.     mr 12,0
  784.     li 11,0
  785.     add 7,7,4
  786.     add 7,7,5
  787.     mulhw 3,8,12
  788.     mullw 4,8,12
  789.     srwi 29,12,31
  790.     add 29,29,11
  791.     mullw 29,29,8
  792.     srwi 0,8,31
  793.     add 0,0,7
  794.     mullw 0,0,12
  795.     lwz 9,0(23)
  796.     lwz 10,4(23)
  797.     lwz 11,0(24)
  798.     lwz 12,4(24)
  799.     subfc 6,10,12
  800.     subfe 5,9,11
  801.     add 3,3,29
  802.     add 3,3,0
  803.     crxor 6,6,6
  804.     bl __divdi3
  805.     crxor 6,6,6
  806.     bl __floatdidf
  807.     addis 21,0,.LC18@ha
  808.     addi 21,21,.LC18@l
  809.     lfd 0,0(21)
  810.     fdiv 1,1,0
  811.     addis 3,0,.LC16@ha
  812.     addi 3,3,.LC16@l
  813.     mr 4,30
  814.     mr 5,31
  815.     creqv 6,6,6
  816.     bl PPCprintf
  817.     li 3,0
  818.     li 4,4096
  819.     bl PPCSetSignal
  820.     andi. 0,3,4096
  821.     bc 4,2,.L67
  822.     srwi 11,31,31
  823.     slwi 0,30,1
  824.     or 9,11,0
  825.     slwi 10,31,1
  826.     mr 30,9
  827.     mr 31,10
  828. .L68:
  829.     addis 9,0,MemSize@ha
  830.     lwz 0,MemSize@l(9)
  831.     mr 10,0
  832.     li 9,0
  833.     cmpw 1,30,9
  834.     bc 12,5,.L69
  835.     bc 4,6,.L71
  836.     cmplw 1,31,10
  837.     bc 4,5,.L71
  838. .L69:
  839.     lis 0,0xf8
  840.     cmpw 1,26,0
  841.     bc 12,6,.L67
  842.     cmpwi 1,22,0
  843.     bc 4,6,.L76
  844.     addis 9,0,CacheBorder@ha
  845.     addis 27,0,MyTimerObject@ha
  846.     addis 25,0,LoopCount@ha
  847.     lwz 0,CacheBorder@l(9)
  848.     addis 9,0,loopticks@ha
  849.     addi 23,9,loopticks@l
  850.     addis 9,0,allticks@ha
  851.     addi 24,9,allticks@l
  852.     mr 31,0
  853.     li 30,0
  854.     b .L77
  855. .L80:
  856.     bl PPCCacheFlushAll
  857.     lis 4,0x8002
  858.     ori 4,4,16401
  859.     li 5,0
  860.     lwz 3,MyTimerObject@l(27)
  861.     bl PPCSetTimerObject
  862.     slwi 9,30,27
  863.     srwi 0,31,5
  864.     or 29,9,0
  865.     srawi 28,30,5
  866.     mr 3,26
  867.     lwz 5,LoopCount@l(25)
  868.     mr 4,29
  869.     bl memwritelinetime2
  870.     lis 4,0x8002
  871.     ori 4,4,16402
  872.     lwz 3,MyTimerObject@l(27)
  873.     li 5,0
  874.     bl PPCSetTimerObject
  875.     bl CalcTimer
  876.     lfd 0,0(24)
  877.     stfd 0,0(23)
  878.     bl PPCCacheFlushAll
  879.     lis 4,0x8002
  880.     ori 4,4,16401
  881.     lwz 3,MyTimerObject@l(27)
  882.     li 5,0
  883.     bl PPCSetTimerObject
  884.     mr 3,26
  885.     lwz 5,LoopCount@l(25)
  886.     mr 4,29
  887.     bl memwriteline2
  888.     lis 4,0x8002
  889.     ori 4,4,16402
  890.     lwz 3,MyTimerObject@l(27)
  891.     li 5,0
  892.     bl PPCSetTimerObject
  893.     bl CalcTimer
  894.     lwz 9,LoopCount@l(25)
  895.     mr 10,9
  896.     li 9,0
  897.     mulhw 7,31,10
  898.     mullw 8,31,10
  899.     srwi 4,10,31
  900.     add 4,4,9
  901.     mullw 4,4,31
  902.     srwi 5,31,31
  903.     add 5,5,30
  904.     addis 6,0,ticks@ha
  905.     lwz 0,ticks@l(6)
  906.     mullw 5,5,10
  907.     mr 12,0
  908.     li 11,0
  909.     add 7,7,4
  910.     add 7,7,5
  911.     mulhw 3,8,12
  912.     mullw 4,8,12
  913.     srwi 29,12,31
  914.     add 29,29,11
  915.     mullw 29,29,8
  916.     srwi 0,8,31
  917.     add 0,0,7
  918.     mullw 0,0,12
  919.     lwz 9,0(23)
  920.     lwz 10,4(23)
  921.     lwz 11,0(24)
  922.     lwz 12,4(24)
  923.     subfc 6,10,12
  924.     subfe 5,9,11
  925.     add 3,3,29
  926.     add 3,3,0
  927.     crxor 6,6,6
  928.     bl __divdi3
  929.     crxor 6,6,6
  930.     bl __floatdidf
  931.     addis 21,0,.LC18@ha
  932.     addi 21,21,.LC18@l
  933.     lfd 0,0(21)
  934.     fdiv 1,1,0
  935.     addis 3,0,.LC17@ha
  936.     addi 3,3,.LC17@l
  937.     mr 4,30
  938.     mr 5,31
  939.     creqv 6,6,6
  940.     bl PPCprintf
  941.     li 3,0
  942.     li 4,4096
  943.     bl PPCSetSignal
  944.     andi. 0,3,4096
  945.     bc 4,2,.L67
  946.     srwi 11,31,31
  947.     slwi 0,30,1
  948.     or 9,11,0
  949.     slwi 10,31,1
  950.     mr 30,9
  951.     mr 31,10
  952. .L77:
  953.     addis 9,0,MemSize@ha
  954.     lwz 0,MemSize@l(9)
  955.     mr 10,0
  956.     li 9,0
  957.     cmpw 1,30,9
  958.     bc 12,5,.L67
  959.     bc 4,6,.L80
  960.     cmplw 1,31,10
  961.     bc 12,5,.L67
  962.     b .L80
  963. .L76:
  964.     addis 9,0,CacheBorder@ha
  965.     addis 27,0,MyTimerObject@ha
  966.     addis 25,0,LoopCount@ha
  967.     lwz 0,CacheBorder@l(9)
  968.     addis 9,0,loopticks@ha
  969.     addi 23,9,loopticks@l
  970.     addis 9,0,allticks@ha
  971.     addi 24,9,allticks@l
  972.     mr 31,0
  973.     li 30,0
  974.     b .L85
  975. .L88:
  976.     bl PPCCacheFlushAll
  977.     lis 4,0x8002
  978.     ori 4,4,16401
  979.     li 5,0
  980.     lwz 3,MyTimerObject@l(27)
  981.     bl PPCSetTimerObject
  982.     slwi 9,30,27
  983.     srwi 0,31,5
  984.     or 29,9,0
  985.     srawi 28,30,5
  986.     mr 3,26
  987.     lwz 5,LoopCount@l(25)
  988.     mr 4,29
  989.     bl memwritelinetime
  990.     lis 4,0x8002
  991.     ori 4,4,16402
  992.     lwz 3,MyTimerObject@l(27)
  993.     li 5,0
  994.     bl PPCSetTimerObject
  995.     bl CalcTimer
  996.     lfd 0,0(24)
  997.     stfd 0,0(23)
  998.     bl PPCCacheFlushAll
  999.     lis 4,0x8002
  1000.     ori 4,4,16401
  1001.     lwz 3,MyTimerObject@l(27)
  1002.     li 5,0
  1003.     bl PPCSetTimerObject
  1004.     mr 3,26
  1005.     lwz 5,LoopCount@l(25)
  1006.     mr 4,29
  1007.     bl memwriteline
  1008.     lis 4,0x8002
  1009.     ori 4,4,16402
  1010.     lwz 3,MyTimerObject@l(27)
  1011.     li 5,0
  1012.     bl PPCSetTimerObject
  1013.     bl CalcTimer
  1014.     lwz 9,LoopCount@l(25)
  1015.     mr 10,9
  1016.     li 9,0
  1017.     mulhw 7,31,10
  1018.     mullw 8,31,10
  1019.     srwi 4,10,31
  1020.     add 4,4,9
  1021.     mullw 4,4,31
  1022.     srwi 5,31,31
  1023.     add 5,5,30
  1024.     addis 6,0,ticks@ha
  1025.     lwz 0,ticks@l(6)
  1026.     mullw 5,5,10
  1027.     mr 12,0
  1028.     li 11,0
  1029.     add 7,7,4
  1030.     add 7,7,5
  1031.     mulhw 3,8,12
  1032.     mullw 4,8,12
  1033.     srwi 29,12,31
  1034.     add 29,29,11
  1035.     mullw 29,29,8
  1036.     srwi 0,8,31
  1037.     add 0,0,7
  1038.     mullw 0,0,12
  1039.     lwz 9,0(23)
  1040.     lwz 10,4(23)
  1041.     lwz 11,0(24)
  1042.     lwz 12,4(24)
  1043.     subfc 6,10,12
  1044.     subfe 5,9,11
  1045.     add 3,3,29
  1046.     add 3,3,0
  1047.     crxor 6,6,6
  1048.     bl __divdi3
  1049.     crxor 6,6,6
  1050.     bl __floatdidf
  1051.     addis 21,0,.LC18@ha
  1052.     addi 21,21,.LC18@l
  1053.     lfd 0,0(21)
  1054.     fdiv 1,1,0
  1055.     addis 3,0,.LC17@ha
  1056.     addi 3,3,.LC17@l
  1057.     mr 4,30
  1058.     mr 5,31
  1059.     creqv 6,6,6
  1060.     bl PPCprintf
  1061.     li 3,0
  1062.     li 4,4096
  1063.     bl PPCSetSignal
  1064.     andi. 0,3,4096
  1065.     bc 4,2,.L67
  1066.     srwi 11,31,31
  1067.     slwi 0,30,1
  1068.     or 9,11,0
  1069.     slwi 10,31,1
  1070.     mr 30,9
  1071.     mr 31,10
  1072. .L85:
  1073.     addis 9,0,MemSize@ha
  1074.     lwz 0,MemSize@l(9)
  1075.     mr 10,0
  1076.     li 9,0
  1077.     cmpw 1,30,9
  1078.     bc 12,5,.L67
  1079.     bc 4,6,.L88
  1080.     cmplw 1,31,10
  1081.     bc 4,5,.L88
  1082. .L67:
  1083.     lwz 0,84(1)
  1084.     mtlr 0
  1085.     lwz 21,36(1)
  1086.     lwz 22,40(1)
  1087.     lwz 23,44(1)
  1088.     lwz 24,48(1)
  1089.     lwz 25,52(1)
  1090.     lwz 26,56(1)
  1091.     lwz 27,60(1)
  1092.     lwz 28,64(1)
  1093.     lwz 29,68(1)
  1094.     lwz 30,72(1)
  1095.     lwz 31,76(1)
  1096.     addi 1,1,80
  1097.     blr
  1098. .Lfe4:
  1099.     .size     MemoryBurstTest,.Lfe4-MemoryBurstTest
  1100. .section    .rodata
  1101.     .align 2
  1102. .LC19:
  1103.     .string    "- Bus CacheMode Performance Statistics\n"
  1104.     .align 2
  1105. .LC20:
  1106.     .string    "%16Ld Long   Read\t%4g MB/s Mem Bandwidth\n"
  1107.     .align 2
  1108. .LC21:
  1109.     .string    "%16Ld Word   Read\t%4g MB/s Mem Bandwidth\n"
  1110.     .align 2
  1111. .LC22:
  1112.     .string    "%16Ld Byte   Read\t%4g MB/s Mem Bandwidth\n"
  1113.     .align 2
  1114. .LC23:
  1115.     .string    "%16Ld Long   Write\t%4g MB/s Mem Bandwidth\n"
  1116.     .align 2
  1117. .LC24:
  1118.     .string    "%16Ld Word   Write\t%4g MB/s Mem Bandwidth\n"
  1119.     .align 2
  1120. .LC25:
  1121.     .string    "%16Ld Byte   Write\t%4g MB/s Mem Bandwidth\n"
  1122.     .align 3
  1123. .LC26:
  1124.     .double 0d1.04857600000000000000e6
  1125.     .section    ".text"
  1126.     .align 2
  1127.     .globl MemorySingleTest
  1128.     .type     MemorySingleTest,@function
  1129.     .long 0x42cc
  1130. MemorySingleTest:
  1131.     stwu 1,-80(1)
  1132.     mflr 0
  1133.     stfd 31,72(1)
  1134.     stw 20,24(1)
  1135.     stw 21,28(1)
  1136.     stw 22,32(1)
  1137.     stw 23,36(1)
  1138.     stw 24,40(1)
  1139.     stw 25,44(1)
  1140.     stw 26,48(1)
  1141.     stw 27,52(1)
  1142.     stw 28,56(1)
  1143.     stw 29,60(1)
  1144.     stw 30,64(1)
  1145.     stw 31,68(1)
  1146.     stw 0,84(1)
  1147.     mr 26,3
  1148.     addis 3,0,.LC19@ha
  1149.     addi 3,3,.LC19@l
  1150.     crxor 6,6,6
  1151.     bl PPCprintf
  1152.     li 31,4096
  1153.     li 30,0
  1154.     addis 25,0,MyTimerObject@ha
  1155.     addis 24,0,LoopCount@ha
  1156.     addis 9,0,loopticks@ha
  1157.     addi 22,9,loopticks@l
  1158.     addis 9,0,allticks@ha
  1159.     addis 20,0,.LC26@ha
  1160.     addi 20,20,.LC26@l
  1161.     lfd 31,0(20)
  1162.     addi 23,9,allticks@l
  1163.     addis 21,0,ticks@ha
  1164.     b .L93
  1165. .L96:
  1166.     bl PPCCacheFlushAll
  1167.     lis 4,0x8002
  1168.     ori 4,4,16401
  1169.     li 5,0
  1170.     lwz 3,MyTimerObject@l(25)
  1171.     bl PPCSetTimerObject
  1172.     slwi 9,30,27
  1173.     srwi 0,31,5
  1174.     or 28,9,0
  1175.     srawi 27,30,5
  1176.     mr 3,26
  1177.     lwz 5,LoopCount@l(24)
  1178.     mr 4,28
  1179.     bl memreadlongtime
  1180.     lis 4,0x8002
  1181.     ori 4,4,16402
  1182.     lwz 3,MyTimerObject@l(25)
  1183.     li 5,0
  1184.     bl PPCSetTimerObject
  1185.     bl CalcTimer
  1186.     lfd 0,0(23)
  1187.     stfd 0,0(22)
  1188.     bl PPCCacheFlushAll
  1189.     lis 4,0x8002
  1190.     ori 4,4,16401
  1191.     lwz 3,MyTimerObject@l(25)
  1192.     li 5,0
  1193.     bl PPCSetTimerObject
  1194.     mr 3,26
  1195.     lwz 5,LoopCount@l(24)
  1196.     mr 4,28
  1197.     crxor 6,6,6
  1198.     bl memreadlong
  1199.     lis 4,0x8002
  1200.     ori 4,4,16402
  1201.     lwz 3,MyTimerObject@l(25)
  1202.     li 5,0
  1203.     bl PPCSetTimerObject
  1204.     bl CalcTimer
  1205.     lwz 9,LoopCount@l(24)
  1206.     mr 10,9
  1207.     li 9,0
  1208.     mulhw 7,31,10
  1209.     mullw 8,31,10
  1210.     srwi 5,10,31
  1211.     add 5,5,9
  1212.     mullw 5,5,31
  1213.     srwi 0,31,31
  1214.     add 0,0,30
  1215.     lwz 6,ticks@l(21)
  1216.     mullw 0,0,10
  1217.     mr 12,6
  1218.     li 11,0
  1219.     add 7,7,5
  1220.     add 7,7,0
  1221.     mulhw 3,8,12
  1222.     mullw 4,8,12
  1223.     srwi 29,12,31
  1224.     add 29,29,11
  1225.     mullw 29,29,8
  1226.     srwi 0,8,31
  1227.     add 0,0,7
  1228.     mullw 0,0,12
  1229.     lwz 9,0(22)
  1230.     lwz 10,4(22)
  1231.     lwz 11,0(23)
  1232.     lwz 12,4(23)
  1233.     subfc 6,10,12
  1234.     subfe 5,9,11
  1235.     add 3,3,29
  1236.     add 3,3,0
  1237.     crxor 6,6,6
  1238.     bl __divdi3
  1239.     crxor 6,6,6
  1240.     bl __floatdidf
  1241.     fdiv 1,1,31
  1242.     addis 3,0,.LC20@ha
  1243.     addi 3,3,.LC20@l
  1244.     mr 4,30
  1245.     mr 5,31
  1246.     creqv 6,6,6
  1247.     bl PPCprintf
  1248.     bl PPCCacheFlushAll
  1249.     lis 4,0x8002
  1250.     ori 4,4,16401
  1251.     lwz 3,MyTimerObject@l(25)
  1252.     li 5,0
  1253.     bl PPCSetTimerObject
  1254.     mr 3,26
  1255.     lwz 5,LoopCount@l(24)
  1256.     mr 4,28
  1257.     bl memreadwordtime
  1258.     lis 4,0x8002
  1259.     ori 4,4,16402
  1260.     lwz 3,MyTimerObject@l(25)
  1261.     li 5,0
  1262.     bl PPCSetTimerObject
  1263.     bl CalcTimer
  1264.     lfd 0,0(23)
  1265.     stfd 0,0(22)
  1266.     bl PPCCacheFlushAll
  1267.     lis 4,0x8002
  1268.     ori 4,4,16401
  1269.     lwz 3,MyTimerObject@l(25)
  1270.     li 5,0
  1271.     bl PPCSetTimerObject
  1272.     mr 3,26
  1273.     lwz 5,LoopCount@l(24)
  1274.     mr 4,28
  1275.     bl memreadword
  1276.     lis 4,0x8002
  1277.     ori 4,4,16402
  1278.     lwz 3,MyTimerObject@l(25)
  1279.     li 5,0
  1280.     bl PPCSetTimerObject
  1281.     bl CalcTimer
  1282.     lwz 9,LoopCount@l(24)
  1283.     mr 10,9
  1284.     li 9,0
  1285.     mulhw 7,31,10
  1286.     mullw 8,31,10
  1287.     srwi 5,10,31
  1288.     add 5,5,9
  1289.     mullw 5,5,31
  1290.     srwi 0,31,31
  1291.     add 0,0,30
  1292.     lwz 6,ticks@l(21)
  1293.     mullw 0,0,10
  1294.     mr 12,6
  1295.     li 11,0
  1296.     add 7,7,5
  1297.     add 7,7,0
  1298.     mulhw 3,8,12
  1299.     mullw 4,8,12
  1300.     srwi 29,12,31
  1301.     add 29,29,11
  1302.     mullw 29,29,8
  1303.     srwi 0,8,31
  1304.     add 0,0,7
  1305.     mullw 0,0,12
  1306.     lwz 9,0(22)
  1307.     lwz 10,4(22)
  1308.     lwz 11,0(23)
  1309.     lwz 12,4(23)
  1310.     subfc 6,10,12
  1311.     subfe 5,9,11
  1312.     add 3,3,29
  1313.     add 3,3,0
  1314.     crxor 6,6,6
  1315.     bl __divdi3
  1316.     crxor 6,6,6
  1317.     bl __floatdidf
  1318.     fdiv 1,1,31
  1319.     addis 3,0,.LC21@ha
  1320.     addi 3,3,.LC21@l
  1321.     mr 4,30
  1322.     mr 5,31
  1323.     creqv 6,6,6
  1324.     bl PPCprintf
  1325.     bl PPCCacheFlushAll
  1326.     lis 4,0x8002
  1327.     ori 4,4,16401
  1328.     lwz 3,MyTimerObject@l(25)
  1329.     li 5,0
  1330.     bl PPCSetTimerObject
  1331.     mr 3,26
  1332.     lwz 5,LoopCount@l(24)
  1333.     mr 4,28
  1334.     bl memreadbytetime
  1335.     lis 4,0x8002
  1336.     ori 4,4,16402
  1337.     lwz 3,MyTimerObject@l(25)
  1338.     li 5,0
  1339.     bl PPCSetTimerObject
  1340.     bl CalcTimer
  1341.     lfd 0,0(23)
  1342.     stfd 0,0(22)
  1343.     bl PPCCacheFlushAll
  1344.     lis 4,0x8002
  1345.     ori 4,4,16401
  1346.     lwz 3,MyTimerObject@l(25)
  1347.     li 5,0
  1348.     bl PPCSetTimerObject
  1349.     mr 3,26
  1350.     lwz 5,LoopCount@l(24)
  1351.     mr 4,28
  1352.     bl memreadbyte
  1353.     lis 4,0x8002
  1354.     ori 4,4,16402
  1355.     lwz 3,MyTimerObject@l(25)
  1356.     li 5,0
  1357.     bl PPCSetTimerObject
  1358.     bl CalcTimer
  1359.     lwz 9,LoopCount@l(24)
  1360.     mr 10,9
  1361.     li 9,0
  1362.     mulhw 7,31,10
  1363.     mullw 8,31,10
  1364.     srwi 5,10,31
  1365.     add 5,5,9
  1366.     mullw 5,5,31
  1367.     srwi 0,31,31
  1368.     add 0,0,30
  1369.     lwz 6,ticks@l(21)
  1370.     mullw 0,0,10
  1371.     mr 12,6
  1372.     li 11,0
  1373.     add 7,7,5
  1374.     add 7,7,0
  1375.     mulhw 3,8,12
  1376.     mullw 4,8,12
  1377.     srwi 29,12,31
  1378.     add 29,29,11
  1379.     mullw 29,29,8
  1380.     srwi 0,8,31
  1381.     add 0,0,7
  1382.     mullw 0,0,12
  1383.     lwz 9,0(22)
  1384.     lwz 10,4(22)
  1385.     lwz 11,0(23)
  1386.     lwz 12,4(23)
  1387.     subfc 6,10,12
  1388.     subfe 5,9,11
  1389.     add 3,3,29
  1390.     add 3,3,0
  1391.     crxor 6,6,6
  1392.     bl __divdi3
  1393.     crxor 6,6,6
  1394.     bl __floatdidf
  1395.     fdiv 1,1,31
  1396.     addis 3,0,.LC22@ha
  1397.     addi 3,3,.LC22@l
  1398.     mr 4,30
  1399.     mr 5,31
  1400.     creqv 6,6,6
  1401.     bl PPCprintf
  1402.     li 3,0
  1403.     li 4,4096
  1404.     bl PPCSetSignal
  1405.     andi. 0,3,4096
  1406.     bc 4,2,.L92
  1407.     srwi 11,31,31
  1408.     slwi 0,30,1
  1409.     or 9,11,0
  1410.     slwi 10,31,1
  1411.     mr 30,9
  1412.     mr 31,10
  1413. .L93:
  1414.     addis 9,0,MemSize@ha
  1415.     lwz 0,MemSize@l(9)
  1416.     mr 10,0
  1417.     li 9,0
  1418.     cmpw 1,30,9
  1419.     bc 12,5,.L94
  1420.     bc 4,6,.L96
  1421.     cmplw 1,31,10
  1422.     bc 4,5,.L96
  1423. .L94:
  1424.     lis 0,0xf8
  1425.     cmpw 1,26,0
  1426.     bc 12,6,.L92
  1427.     li 31,4096
  1428.     li 30,0
  1429.     addis 25,0,MyTimerObject@ha
  1430.     addis 24,0,LoopCount@ha
  1431.     addis 9,0,loopticks@ha
  1432.     addi 22,9,loopticks@l
  1433.     addis 9,0,allticks@ha
  1434.     addis 20,0,.LC26@ha
  1435.     addi 20,20,.LC26@l
  1436.     lfd 31,0(20)
  1437.     addi 23,9,allticks@l
  1438.     addis 21,0,ticks@ha
  1439.     b .L101
  1440. .L104:
  1441.     bl PPCCacheFlushAll
  1442.     lis 4,0x8002
  1443.     ori 4,4,16401
  1444.     li 5,0
  1445.     lwz 3,MyTimerObject@l(25)
  1446.     bl PPCSetTimerObject
  1447.     slwi 9,30,27
  1448.     srwi 0,31,5
  1449.     or 28,9,0
  1450.     srawi 27,30,5
  1451.     mr 3,26
  1452.     lwz 5,LoopCount@l(24)
  1453.     mr 4,28
  1454.     bl memreadlongtime
  1455.     lis 4,0x8002
  1456.     ori 4,4,16402
  1457.     lwz 3,MyTimerObject@l(25)
  1458.     li 5,0
  1459.     bl PPCSetTimerObject
  1460.     bl CalcTimer
  1461.     lfd 0,0(23)
  1462.     stfd 0,0(22)
  1463.     bl PPCCacheFlushAll
  1464.     lis 4,0x8002
  1465.     ori 4,4,16401
  1466.     lwz 3,MyTimerObject@l(25)
  1467.     li 5,0
  1468.     bl PPCSetTimerObject
  1469.     mr 3,26
  1470.     lwz 5,LoopCount@l(24)
  1471.     mr 4,28
  1472.     bl memwritelong
  1473.     lis 4,0x8002
  1474.     ori 4,4,16402
  1475.     lwz 3,MyTimerObject@l(25)
  1476.     li 5,0
  1477.     bl PPCSetTimerObject
  1478.     bl CalcTimer
  1479.     lwz 9,LoopCount@l(24)
  1480.     mr 10,9
  1481.     li 9,0
  1482.     mulhw 7,31,10
  1483.     mullw 8,31,10
  1484.     srwi 5,10,31
  1485.     add 5,5,9
  1486.     mullw 5,5,31
  1487.     srwi 0,31,31
  1488.     add 0,0,30
  1489.     lwz 6,ticks@l(21)
  1490.     mullw 0,0,10
  1491.     mr 12,6
  1492.     li 11,0
  1493.     add 7,7,5
  1494.     add 7,7,0
  1495.     mulhw 3,8,12
  1496.     mullw 4,8,12
  1497.     srwi 29,12,31
  1498.     add 29,29,11
  1499.     mullw 29,29,8
  1500.     srwi 0,8,31
  1501.     add 0,0,7
  1502.     mullw 0,0,12
  1503.     lwz 9,0(22)
  1504.     lwz 10,4(22)
  1505.     lwz 11,0(23)
  1506.     lwz 12,4(23)
  1507.     subfc 6,10,12
  1508.     subfe 5,9,11
  1509.     add 3,3,29
  1510.     add 3,3,0
  1511.     crxor 6,6,6
  1512.     bl __divdi3
  1513.     crxor 6,6,6
  1514.     bl __floatdidf
  1515.     fdiv 1,1,31
  1516.     addis 3,0,.LC23@ha
  1517.     addi 3,3,.LC23@l
  1518.     mr 4,30
  1519.     mr 5,31
  1520.     creqv 6,6,6
  1521.     bl PPCprintf
  1522.     bl PPCCacheFlushAll
  1523.     lis 4,0x8002
  1524.     ori 4,4,16401
  1525.     lwz 3,MyTimerObject@l(25)
  1526.     li 5,0
  1527.     bl PPCSetTimerObject
  1528.     mr 3,26
  1529.     lwz 5,LoopCount@l(24)
  1530.     mr 4,28
  1531.     bl memreadwordtime
  1532.     lis 4,0x8002
  1533.     ori 4,4,16402
  1534.     lwz 3,MyTimerObject@l(25)
  1535.     li 5,0
  1536.     bl PPCSetTimerObject
  1537.     bl CalcTimer
  1538.     lfd 0,0(23)
  1539.     stfd 0,0(22)
  1540.     bl PPCCacheFlushAll
  1541.     lis 4,0x8002
  1542.     ori 4,4,16401
  1543.     lwz 3,MyTimerObject@l(25)
  1544.     li 5,0
  1545.     bl PPCSetTimerObject
  1546.     mr 3,26
  1547.     lwz 5,LoopCount@l(24)
  1548.     mr 4,28
  1549.     bl memwriteword
  1550.     lis 4,0x8002
  1551.     ori 4,4,16402
  1552.     lwz 3,MyTimerObject@l(25)
  1553.     li 5,0
  1554.     bl PPCSetTimerObject
  1555.     bl CalcTimer
  1556.     lwz 9,LoopCount@l(24)
  1557.     mr 10,9
  1558.     li 9,0
  1559.     mulhw 7,31,10
  1560.     mullw 8,31,10
  1561.     srwi 5,10,31
  1562.     add 5,5,9
  1563.     mullw 5,5,31
  1564.     srwi 0,31,31
  1565.     add 0,0,30
  1566.     lwz 6,ticks@l(21)
  1567.     mullw 0,0,10
  1568.     mr 12,6
  1569.     li 11,0
  1570.     add 7,7,5
  1571.     add 7,7,0
  1572.     mulhw 3,8,12
  1573.     mullw 4,8,12
  1574.     srwi 29,12,31
  1575.     add 29,29,11
  1576.     mullw 29,29,8
  1577.     srwi 0,8,31
  1578.     add 0,0,7
  1579.     mullw 0,0,12
  1580.     lwz 9,0(22)
  1581.     lwz 10,4(22)
  1582.     lwz 11,0(23)
  1583.     lwz 12,4(23)
  1584.     subfc 6,10,12
  1585.     subfe 5,9,11
  1586.     add 3,3,29
  1587.     add 3,3,0
  1588.     crxor 6,6,6
  1589.     bl __divdi3
  1590.     crxor 6,6,6
  1591.     bl __floatdidf
  1592.     fdiv 1,1,31
  1593.     addis 3,0,.LC24@ha
  1594.     addi 3,3,.LC24@l
  1595.     mr 4,30
  1596.     mr 5,31
  1597.     creqv 6,6,6
  1598.     bl PPCprintf
  1599.     bl PPCCacheFlushAll
  1600.     lis 4,0x8002
  1601.     ori 4,4,16401
  1602.     lwz 3,MyTimerObject@l(25)
  1603.     li 5,0
  1604.     bl PPCSetTimerObject
  1605.     mr 3,26
  1606.     lwz 5,LoopCount@l(24)
  1607.     mr 4,28
  1608.     bl memreadbytetime
  1609.     lis 4,0x8002
  1610.     ori 4,4,16402
  1611.     lwz 3,MyTimerObject@l(25)
  1612.     li 5,0
  1613.     bl PPCSetTimerObject
  1614.     bl CalcTimer
  1615.     lfd 0,0(23)
  1616.     stfd 0,0(22)
  1617.     bl PPCCacheFlushAll
  1618.     lis 4,0x8002
  1619.     ori 4,4,16401
  1620.     lwz 3,MyTimerObject@l(25)
  1621.     li 5,0
  1622.     bl PPCSetTimerObject
  1623.     mr 3,26
  1624.     lwz 5,LoopCount@l(24)
  1625.     mr 4,28
  1626.     bl memwritebyte
  1627.     lis 4,0x8002
  1628.     ori 4,4,16402
  1629.     lwz 3,MyTimerObject@l(25)
  1630.     li 5,0
  1631.     bl PPCSetTimerObject
  1632.     bl CalcTimer
  1633.     lwz 9,LoopCount@l(24)
  1634.     mr 10,9
  1635.     li 9,0
  1636.     mulhw 7,31,10
  1637.     mullw 8,31,10
  1638.     srwi 5,10,31
  1639.     add 5,5,9
  1640.     mullw 5,5,31
  1641.     srwi 0,31,31
  1642.     add 0,0,30
  1643.     lwz 6,ticks@l(21)
  1644.     mullw 0,0,10
  1645.     mr 12,6
  1646.     li 11,0
  1647.     add 7,7,5
  1648.     add 7,7,0
  1649.     mulhw 3,8,12
  1650.     mullw 4,8,12
  1651.     srwi 29,12,31
  1652.     add 29,29,11
  1653.     mullw 29,29,8
  1654.     srwi 0,8,31
  1655.     add 0,0,7
  1656.     mullw 0,0,12
  1657.     lwz 9,0(22)
  1658.     lwz 10,4(22)
  1659.     lwz 11,0(23)
  1660.     lwz 12,4(23)
  1661.     subfc 6,10,12
  1662.     subfe 5,9,11
  1663.     add 3,3,29
  1664.     add 3,3,0
  1665.     crxor 6,6,6
  1666.     bl __divdi3
  1667.     crxor 6,6,6
  1668.     bl __floatdidf
  1669.     fdiv 1,1,31
  1670.     addis 3,0,.LC25@ha
  1671.     addi 3,3,.LC25@l
  1672.     mr 4,30
  1673.     mr 5,31
  1674.     creqv 6,6,6
  1675.     bl PPCprintf
  1676.     li 3,0
  1677.     li 4,4096
  1678.     bl PPCSetSignal
  1679.     andi. 0,3,4096
  1680.     bc 4,2,.L92
  1681.     srwi 11,31,31
  1682.     slwi 0,30,1
  1683.     or 9,11,0
  1684.     slwi 10,31,1
  1685.     mr 30,9
  1686.     mr 31,10
  1687. .L101:
  1688.     addis 9,0,MemSize@ha
  1689.     lwz 0,MemSize@l(9)
  1690.     mr 10,0
  1691.     li 9,0
  1692.     cmpw 1,30,9
  1693.     bc 12,5,.L92
  1694.     bc 4,6,.L104
  1695.     cmplw 1,31,10
  1696.     bc 4,5,.L104
  1697. .L92:
  1698.     lwz 0,84(1)
  1699.     mtlr 0
  1700.     lwz 20,24(1)
  1701.     lwz 21,28(1)
  1702.     lwz 22,32(1)
  1703.     lwz 23,36(1)
  1704.     lwz 24,40(1)
  1705.     lwz 25,44(1)
  1706.     lwz 26,48(1)
  1707.     lwz 27,52(1)
  1708.     lwz 28,56(1)
  1709.     lwz 29,60(1)
  1710.     lwz 30,64(1)
  1711.     lwz 31,68(1)
  1712.     lfd 31,72(1)
  1713.     addi 1,1,80
  1714.     blr
  1715. .Lfe5:
  1716.     .size     MemorySingleTest,.Lfe5-MemorySingleTest
  1717.     .comm    MyArgs,36,4
  1718.     .comm    SysBase,4,4
  1719.     .comm    DOSBase,4,4
  1720.     .comm    Result,8,8
  1721.     .comm    MyTimerObject,4,4
  1722.     .comm    ticks,4,4
  1723.     .comm    allticks,8,8
  1724.     .comm    MemSize,4,4
  1725.     .comm    Intenar,2,2
  1726.     .comm    CacheBorder,4,4
  1727.     .comm    CacheSize,4,4
  1728.     .ident    "GCC: (GNU) 2.7.2.1"
  1729.